package 算法;

import java.util.Date;

/**
 * @author
 * @date 2024年03月23日 17:02
 * @description 滑动窗口算法
 */
public class 滑动窗口算法 {


    // 指定窗口
    static  int[] windows ={0,0,0,0,0,0};

    // 当前所在窗口
    static int cardId = 0;
    static Date localTime = new Date();

    // 当前请求总数
    static int counter=0;


    static boolean sliderWindowLimit(){


        Date now = new Date();

        long timer = (now.getTime() - localTime.getTime()) / 1000;

        if (timer >= 10) {

            counter -= windows[cardId];

            cardId++;
            cardId = cardId % windows.length;
            windows[cardId] = 1;

            localTime = now;
        } else {
            ++windows[cardId];
        }
        ++counter;
        // 判断该时间片内的请求数是否超过1000
        return counter > 1000;


    }
}
